package pda.agenda;

import pda.base.IApplication;
import pda.base.IPda;

import pda.agenda.ihm.AgendaView;
import pda.agenda.datas.Activity;
import pda.agenda.datas.AgendaEngine;
import pda.agenda.datas.CalendarTools;

import javax.swing.*;
import java.awt.Color;

import java.util.Calendar;
import java.util.GregorianCalendar;

import java.util.ArrayList;

import pda.agenda.datas.ChevauchementActiviteException;

public class Agenda implements IApplication {

	/**
	 * Le nom de l'application.
	 */
	protected String name = "Agenda";
    
	/**
	 * La fenêtre principale de l'Agenda.
	 */
	public static final AgendaView view = new AgendaView();
	
	/**
	 * Les données de l'agenda.
	 */
	public static final AgendaEngine engine = new AgendaEngine();

	public Agenda() {

	}

	public void start(IPda pda) {

		Agenda.view.changePanel(Agenda.view.NOM_FENETRE_PRINCIPALE);
		Agenda.view.getTabbedPane().setSelectedIndex(0);

		GregorianCalendar date = new GregorianCalendar();
		date.set(Calendar.DAY_OF_MONTH, 0);

		int[] listeDesJours = CalendarTools.listeDesJours(date);
		
		int mois = date.get(GregorianCalendar.MONTH);
		int annee = date.get(GregorianCalendar.YEAR);
		
		int moisPrecedant;
		int anneePrecedante;
		if(mois-1 < 0) {
			moisPrecedant = 11;
			anneePrecedante = annee-1;
		} else {
			moisPrecedant = mois-1;
			anneePrecedante = annee;
		}
		
		int moisSuivant;
		int anneeSuivante;
		if(mois+1 > 11) {
			moisSuivant = 0;
			anneeSuivante = annee+1;
		} else {
			moisSuivant = mois+1;
			anneeSuivante = annee;
		}
		
		int leMois = 0;

		for(int i = 0;i<listeDesJours.length;i++){
			ArrayList<Activity> listeDesActivites;
			
			// échangeur de mois
			if(listeDesJours[i] == 1){
				leMois++;
			}
			
			if(leMois == 0){
				listeDesActivites = engine.getListeActivity(new GregorianCalendar(anneePrecedante,moisPrecedant,listeDesJours[i]),new GregorianCalendar(anneePrecedante,moisPrecedant,listeDesJours[i],23,59,59));
			}
			else if(leMois == 1){
				listeDesActivites = engine.getListeActivity(new GregorianCalendar(annee,mois,listeDesJours[i]),new GregorianCalendar(annee,mois,listeDesJours[i],23,59,59));
			}
			else{
				listeDesActivites = engine.getListeActivity(new GregorianCalendar(anneeSuivante,moisSuivant,listeDesJours[i]),new GregorianCalendar(anneeSuivante,moisSuivant,listeDesJours[i],23,59,59));
			}
			
			//view.getAgendaViewMois().getJoursDuMois(i+7).setText(listeDesJours[i]);
			
			if(listeDesActivites.size() > 0){
				view.getAgendaViewMois().getJoursDuMois(i+7).setBackground(Color.WHITE);
			}
		}
	}

	public String getAppliName() {
		return name;
	}

	public JPanel getAppliPanel() {
		return view.getPanel();
	} 

	public boolean close() {
		return true;
	}
}
